/**
 * 思路：
 *  1. 定义一个长度为2的初始化函数
 *  2. 通过判断偷或者不偷， 哪一个值更大（核心）
 */

let arr = [1, 2, 3]
function steal(arr) {
    // 初始化数组
    let pb = [0, arr[0]]

    if(arr.length === 0) return 0

    // 通过for循环给pb数组设置新的值
    // 为什么要<=arr.length, 不会越界吗？ 是因为需要不断的给pb赋值， 正好等号可以不断的在数组末尾添加新的值， 关联起来就好理解了
    for(let i=2; i<=arr.length; i++) {
        pb[i] = Math.max(pb[i-1], pb[i-2] + arr[i-1])
    }
    return pb[arr.length]
}
console.log(steal(arr))